function resetWorkspace()
%RESETWORKSPACE 重置工作空间到启动状态
%   此函数清理基础工作空间中的所有变量，除了默认的模型配置变量。
%   用于将MATLAB环境重置到干净的初始状态，确保变量冲突不会影响后续操作。
%
%语法:
%   resetWorkspace()
%
%输入参数:
%   无
%
%输出参数:
%   无
%
%说明:
%   - 首先设置slddLink标志确定数据存储策略
%   - 使用evalin('base', 'clear;')清理基础工作空间
%   - 根据slddLink设置决定是否重新加载模型配置
%   - 支持两种数据管理模式：数据字典模式和基础工作空间模式
%
%数据管理模式:
%   1. 数据字典模式（slddLink = true）：
%      - 模型链接到Simulink数据字典文件
%      - 工作空间保持清洁，无需重新加载配置
%      - 推荐的现代化数据管理方式
%
%   2. 基础工作空间模式（slddLink = false）：
%      - 使用MATLAB数据文件定义模型配置
%      - 需要重新加载nonreusableModelConfig和reusableModelConfig
%      - 兼容传统的数据管理方式
%
%清理内容:
%   - 用户定义的所有变量
%   - 临时计算结果和中间变量
%   - 测试数据和覆盖率变量
%   - 模型参数（如果使用基础工作空间模式）
%   - 函数句柄和结构体
%
%保留内容:
%   - MATLAB内置函数和工具箱函数
%   - 项目配置和路径设置
%   - 模型配置（根据数据管理模式重新加载）
%
%使用场景:
%   - 项目初始化或重新开始开发
%   - 解决变量名冲突问题
%   - 确保测试环境的一致性
%   - 内存清理和性能优化
%   - 自动化脚本的环境准备
%
%重要性:
%   在DO-178C开发流程中，环境的一致性和可重现性至关重要。
%   工作空间重置确保每次操作从已知的干净状态开始。
%
%示例:
%   % 基本重置操作
%   resetWorkspace();
%   fprintf('工作空间已重置到初始状态\n');
%
%   % 完整的环境重置序列
%   function fullEnvironmentReset()
%       fprintf('开始完整环境重置...\n');
%       
%       % 1. 清理测试和覆盖率数据
%       clearTestManager();
%       clearCoverageData();
%       
%       % 2. 关闭所有模型
%       bdclose('all');
%       
%       % 3. 重置工作空间
%       resetWorkspace();
%       
%       % 4. 返回工作目录
%       returnToWorkFolder();
%       
%       fprintf('环境重置完成\n');
%   end
%
%   % 安全的开发会话开始
%   function startDevelopmentSession(sessionName)
%       fprintf('开始开发会话: %s\n', sessionName);
%       
%       % 重置环境确保干净状态
%       resetWorkspace();
%       
%       % 设置会话特定配置
%       fprintf('会话 %s 环境已准备就绪\n', sessionName);
%   end
%
%   % 模型开发前的准备
%   function prepareModelDevelopment(modelName)
%       fprintf('准备开发模型: %s\n', modelName);
%       
%       % 重置工作空间
%       resetWorkspace();
%       
%       % 设置模型特定环境
%       if exist(['setup_', modelName, '.m'], 'file')
%           evalin('base', ['setup_', modelName]);
%       end
%       
%       fprintf('模型 %s 开发环境已准备完毕\n', modelName);
%   end
%
%配置管理:
%   函数内部的slddLink标志控制数据管理策略：
%   - true: 使用现代化的数据字典方式（推荐）
%   - false: 使用传统的工作空间变量方式
%
%性能考虑:
%   - 清理大量变量可能需要一些时间
%   - 重新加载配置文件会有额外开销
%   - 建议在批量操作开始前执行一次
%
%数据安全:
%   此操作会永久删除工作空间中的所有变量。
%   如有重要数据，请在调用前保存。
%
%依赖项:
%   evalin - 在指定工作空间执行代码
%   nonreusableModelConfig - 不可重用模型配置（如果使用）
%   reusableModelConfig - 可重用模型配置（如果使用）
%
%参见:
%   clearTestManager, clearCoverageData, returnToWorkFolder, evalin
%

%版本: 1.0
%日期: 2021-2024
%
%注意:
%   修改slddLink标志前请确认项目的数据管理策略。
%   数据字典模式是推荐的现代化方式。
%


% Set slddLink to true to link model to data dictionary instead of using
% base workspace. Otherwise, set slddLink to false.
slddLink = true;

% Clear the workspace.
evalin('base', 'clear;');

if ~slddLink
    % Load model configurations into base worksapce if model configurations
    % are defined using MATLAB data files instead of Simulink data
    % dictionary files.
    evalin('base', 'nonreusableModelConfig;');
    evalin('base', 'reusableModelConfig;');
end

end
